
/**
 * Configurazione del plugin di angular "ngIdle" che gestisce il timeout della sessione.
 * I parametri del timer vengono determinati a partire dal valore di session timeout del server.
 */
BootApplication.config([ 'IdleProvider', 'KeepaliveProvider', 'TitleProvider', function( IdleProvider, KeepaliveProvider, TitleProvider) {

 /** 			-->> IdleProvider <<-- 		**/
	
	/**
	 * Idle, una volta che il watch() viene chiamato, inizierà un timeout che se scade, verrà aperta una finestra di avviso della sessione in scadenza.
	 * Una volta che il conto alla rovescia raggiunge lo zero, verrà trasmesso un'evento di timeout in cui l' applicazione deve effettuare il logout.
	 * Se l'utente, invece, esegue un'azione che attiva un evento DOM il timeout sarà resettato, e avviato il processo da capo.
	 */
	
	/** I seguenti metodi possono essere utilizzati per configurare Idle: */
		
	/**
	 * 1. La durata del timeout di inattività in secondi. Dopo che questo lasso di tempo passa senza che l'utente esegue un'azione che attiva uno 
	 * 	  degli eventi DOM, l'utente è considerato inattivo.
	 */
	IdleProvider.idle(Constants.TIMEOUT_WARN_TIME)
	/**
	 * 2. Tempo in secondi che deve trascorrere fino a quando il browser viene reindirizzato alla "redirect url" perchè la sessione scaduta.
	 */
    IdleProvider.timeout(Constants.TIMEOUT_REDIRECT_TIME)
    /**
     * 3. Possible values are off/false, idle/true, or notIdle. When true or idle, user activity will automatically interrupt the warning countdown 
     *    and reset the idle state. If false or off, you will need to manually call watch() when you want to start watching for idleness again. 
     *    If notIdle, user activity will only automatically interrupt if the user is not yet idle.
     */
    IdleProvider.autoResume("off");
    /**
     * 4. When true, the Keepalive service is automatically stopped and started as needed.
     */
    IdleProvider.keepalive(true);
    
 /** 			-->> KeepaliveProvider <<-- 		**/
    
    /**
     * Keepalive è usato per fare una richiesta HTTP per mantenere viva la sessione dell'utente.
     */
    KeepaliveProvider.http(Constants.SessionKeepAliveUrl);
  
 /** 			-->> TitleProvider <<-- 		**/
    
    /**
     * Titolo registra il titolo del documento e gli permette di cambiare. Essa ha anche una funzione più specifica, che è quella di visualizzare un 
     * messaggio di avviso di inattività o sessione scaduta nel titolo. Il testo dei messaggi di cui sopra può essere personalizzato in modo dinamico.
     * 
     * La direttiva titolo monitora l'evento IdleWarn e visualizza il messaggio di avviso di inattività, incluso il valore del conto alla rovescia. 
     * Monitora anche l'evento IdleTimeout per visualizzare il messaggio di timeout. 
     * Infine, quando viene rilevato evento IdleEnd, ripristina il titolo di nuovo a quello originale.
     */

    /**
     * Consente di abilitare la funzionalità titolo
     */
    TitleProvider.enabled(true);
    
}]);